package entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.Size;

@Entity
@Table(name="recurso",schema="almirante")
@NamedQueries({ @NamedQuery(name = "obterPorLogin", query = "FROM Recurso WHERE loginrecurso = :login") 	
})
public class Recurso implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -3795035789464662511L;
	
	@Id
	@SequenceGenerator(name = "RECURSO_ID", sequenceName = "id_recurso_seq", schema="almirante")
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "RECURSO_ID")
	@Column(name = "id_recurso")
	private Integer idRecurso;
	
	@Size(max=50)
	private String nomeRecurso;
	
	@ManyToOne
	private Papel papel;
	
	private String cargo;
	
	@Column(unique=true)
	private String loginRecurso;
	
	private String senhaRecurso;
	
	private String emailRecurso;
	
	public Integer getIdRecurso() {
		return idRecurso;
	}
	public void setIdRecurso(Integer idRecurso) {
		this.idRecurso = idRecurso;
	}
	
	public String getNomeRecurso() {
		return nomeRecurso;
	}
	public void setNomeRecurso(String nomeRecuros) {
		this.nomeRecurso = nomeRecuros;
	}
	public String getLoginRecurso() {
		return loginRecurso;
	}
	public void setLoginRecurso(String loginRecurso) {
		this.loginRecurso = loginRecurso;
	}
	public String getSenhaRecurso() {
		return senhaRecurso;
	}
	public void setSenhaRecurso(String senhaRecurso) {
		this.senhaRecurso = senhaRecurso;
	}
	public String getEmailRecurso() {
		return emailRecurso;
	}
	public void setEmailRecurso(String emailRecurso) {
		this.emailRecurso = emailRecurso;
	}
	public Papel getPapel() {
		return papel;
	}
	public void setPapel(Papel papel) {
		this.papel = papel;
	}
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((idRecurso == null) ? 0 : idRecurso.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Recurso other = (Recurso) obj;
		if (idRecurso == null) {
			if (other.idRecurso != null)
				return false;
		} else if (!idRecurso.equals(other.idRecurso))
			return false;
		return true;
	}
	public String getCargo() {
		return cargo;
	}
	public void setCargo(String cargo) {
		this.cargo = cargo;
	}
	
}
